package com.order.www;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
 * Creared with IntelliJ IDEA.
 * Description:输入一个非负整数数组numbers，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
 * 例如输入数组[3，32，321]，则打印出这三个数字能排成的最小数字为321323。
 * 1.输出结果可能非常大，所以你需要返回一个字符串而不是整数
 * 2.拼接起来的数字可能会有前导 0，最后结果不需要去掉前导 0
 * User:yxd
 * Date:2022-02-09
 * Time:12:36
 */
public class Array4 {
    public static void main(String[] args) {
        int[] array = {3,32,321};
        System.out.println(PrintMinNumber(array));
    }

    public static String PrintMinNumber(int [] numbers) {
        String s = "";
        if(numbers == null){
            return s;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0;i < numbers.length;i ++){
            list.add(numbers[i]);
        }
        Collections.sort(list,new Comparator<Integer>(){//按此种比较方法排序
            public int compare(Integer s1,Integer s2){
                String st1 = s1 + "" + s2;
                String st2 = s2 + "" + s1;
                return st1.compareTo(st2);
            }
        });
        for(int i:list){
            s += i;
        }
        return s;
    }

}
